// 转换函数返回的结果
function transformException(target, propertyName, descriptor) {
  const cache = new Map() // 用于缓存原函数的结果
  const value = descriptor.value // 保存原方法
  descriptor.value =function(...args){ // 重写方法
    const cacheKey = JSON.stringify(args)
    if (cache.has(cacheKey)) {
      return cache.get(cacheKey) // 返回缓存中保存的结果
    } else {
      const result = value(...args) // 调用原函数 获取返回值
      cache.set(cacheKey, result) // 缓存参数与返回值的映射关系
      return result // 返回原函数的返回值
    }
  }
}

class Example {
  @transformException
  calcuate(a: number, b: number) {
    console.log('执行原函数的计算操作')
    return a + b
  }
}

console.log((new Example()).calcuate(1,2));
console.log((new Example()).calcuate(1,2));
console.log((new Example()).calcuate(1,2));

export {}

